Định nghĩa Cây_hậu_tố

Cây hậu tố cho xâu S {\displaystyle S} độ dài n {\displaystyle n} là cây sao cho ([6] trang 90):

  • các đường từ gốc tới lá có tương ứng 1-1 với các hậu tố của S {\displaystyle S} ,
  • các cạnh đều có nhãn là các xâu khác rỗng,
  • mọi nút trong (ngoại trừ nút gốc) đều có ít nhất hai con.

Do cây thỏa mãn tính chất trên có thể không tồn tại, ta chèn thêm vào cuối S {\displaystyle S} một ký tự đặc biệt không xuất hiện trong S {\displaystyle S} (thường ký hiệu là $). Điều này đảm bảo không có hậu tố nào là tiền tố của một hậu tố khác, và có do đó cây có đúng n {\displaystyle n} nút lá, ứng với n {\displaystyle n} hậu tố của S {\displaystyle S} . Do mọi nút trong khác gốc đều có hơn một con, cây có không quá n −  1 nút như vậy, và tổng cộng không quá n + (n − 1) + 1 = 2n nút (n lá, n − 1 nút trong khác gốc, 1 gốc).

Liên kết hậu tố là một yếu tố quan trọng của các thuật toán đầu tiên nhưng các thuật toán về sau dựa trên thuật toán Farach không sử dụng chúng. Trong cây hậu tố đầy đủ, mọi nút trong đều có một liên kết hậu tố tới một nút trong khác. Nếu đường từ gốc tới một nút ứng với xâu χ α {\displaystyle \chi \alpha } , trong đó χ {\displaystyle \chi } là một ký tự và α {\displaystyle \alpha } là một xâu (có thể rỗng), thì nó có liên kết hậu tố tới nút có đường từ gốc tới nó ứng với xâu α {\displaystyle \alpha } . Chẳng hạn trong ví dụ trên, liên kết hậu tố của ANA trỏ tới nút NA. Liên kết hậu tố cũng được sử dụng bởi nhiều thuật toán trên cây.

Tài liệu tham khảo

WikiPedia: Cây_hậu_tố http://webhome.cs.uvic.ca/~mgbarsky/DIGEST_SEARCH http://code.google.com/p/patl/ http://www.zbh.uni-hamburg.de/staff/kurtz/papers/G... http://hkn.eecs.berkeley.edu/~dyoo/python/suffix_t... http://www.cs.rutgers.edu/~farach/pubs/Suffix.pdf http://www.cs.ucdavis.edu/~gusfield/strmat.html http://www.cise.ufl.edu/~sahni/dsaaj/enrich/c16/su... http://www.cs.helsinki.fi/group/suds/ http://www.cs.helsinki.fi/u/ukkonen/SuffixT1withFi... http://www.nist.gov/dads/HTML/suffixtree.html